//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public License
// along with this program.  If not, see http://www.gnu.org/licenses/.
// 

#include "terminal.h"
Define_Module(terminal);

void terminal::initialize()
{
    this->id = par("id");
    this->interArrivalTime = par("arrivalTime");
    cMessage* nuevoMsj = new cMessage("NewComand");
    scheduleAt(simTime() + exponential(interArrivalTime,0),nuevoMsj);
}

void terminal::handleMessage(cMessage *msg){
    Comand *comand = new Comand("Comand");
    comand->setIdComand(comand->getId());
    comand->setIdTerminal(this->id);
    //uniform distribution with values 0 and 8 ref to 4 requeriment to access in disc
    int nroReqs = par("nroReqs");
    if(nroReqs<0) comand->setNroRequirements(0);
    else comand->setNroRequirements(nroReqs);
    /*exponential distribution with value 0.480 as media process time
    comand->setTimeProcess(par("timeProcess"));*/
    comand->setTimeIn(simTime());
    send(comand,"out_t");
    cMessage* nvoMsj = new cMessage("newComand");
    scheduleAt(simTime() + exponential(interArrivalTime,0),nvoMsj);
    delete msg;
}
